Many computer applications arise which require a computer to respond to external events and to perform computations and control functions within specified, often very brief time limits. Systems of this type are referred to as response- or real-time-oriented systems. Two things must be accomplished in real-time. First, data must be transferred from the I/O subsystem to the processors in a timely fashion, and second the processors must complete their computations on that data in a timely fashion. In other words, there must be a predictable computation latency. The transfers and computations must occur in predictable time intervals in order to meet the concept of real-time operation. Depending upon the application, the time intervals involved may range from several microseconds to several seconds.
These time intervals can be termed "time slices". In a slice of time, the system will receive input data, process that data, and send any resulting data back out of the system. The time slice then, consists of an input time, a compute time, and finally an output time. To determine the minimum time slice (i.e. the fastest real-time response at which a computer system can perform), the input time, compute time and output time must be taken into account. The slowest of these dictates the minimum time slice available.
Historically, the slowest of these has been the compute time. Hence, the data is transferred into the processors while the processors are performing the previous computations, and then the data is sent out while the processors are performing the next computation such that the input, compute, and output time slices are overlapping. This process achieves data chaining. However, as systems develop more and more computational speed, the input times and output times become a limiting factor of the real-time response. Thus, any real-time system design must be cautious to ensure that the input and/or output times do not exceed the compute time.
Some applications require that an entire multiprocessing machine be dedicated real-time. One such dedicated real-time application is a jet simulator. In order for the simulator to accurately simulate the actions and responses of a real jet, the simulator's computer system must be capable of responding almost immediately to the input into the system (such input includes the pilot "steering" the simulator, operating the controls, changing "scenery", fuel status, mechanical problems, etc.). One drawback of existing real-time simulators is that the response lags behind the input so much that by the time the simulator responds, the simulated jet does not respond as a real jet would but rather feels sluggish. As a result, the simulator does not accurately reflect for the pilot the flying experience of an actual jet.
Another application of a real-time dedicated system are those applications involving a very large amount of data. Although these applications are not so concerned with an immediate response to changing input, they must make sure they can process all the data entering the system in a certain allotted time to be sure that no data is lost.
Other real-time applications do not require that an entire multiprocessing computer system be dedicated real time, but do need the system or portions thereof to be able to run real-time tasks when necessary. Thus, a system must be able to activate a certain number of its processors (this number will depend on the task to be accomplished) to real-time operation when necessary, and be able to return those processors to a normal mode of operation once the real-time job is completed.
Accordingly, it is readily seen that there is a need in the art for increasingly fast response real-time vector computer systems. There is also a need in the art for a real-time vector computer system which is easily adaptable to, and which can be used for, several different types of real-time application.